package io;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

/*      对文件内容的访问类，可以读文件，可以写文件。
 *      可以从任意位置读取、写入、插入
 * */
public class RandomAccessFileTest {

    public static void main(String[] args) throws IOException{
        
        File file = new File("F:\\Java Documents\\test\\src\\io\\RandomFile.txt");
        if(!file.exists()){
            file.createNewFile();
        }
        
        RandomAccessFile raf = new RandomAccessFile(file,"rw");//rw可读可写 r只读
        
        System.out.println(raf.getFilePointer());//getFilePointer方法会返回此文件中指针的当前偏移量。
        raf.write('a');//一次性只能写一个字节
//        raf.write('中');//中文在UTF-8中占3个字节，在gbk中占两个字节
        
        /*设置指针指到文件开头，seek()方法会从文件开头以字节为单位测量的偏移量位置，在该位置设置文件指针。*/
        raf.seek(0);
        
        byte[] buf = new byte[(int) raf.length()];//length()返回此文件的长度。返回单位：字节。返回类型：long。
        raf.read(buf);//把文件中的数据读入到数组中
        System.out.println(new String(buf));
        
        raf.close();//最终操作，关闭文件
    }
}
